#include <iostream>
#include <string>
#include <cstdio>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int main()
{
    // 1.创建管道文件
    int n = mkfifo("fifo_for_copy", 0666);
    if (n < 0)
    {
        perror("mkfifo");
        exit(1);
    }

    // 2.以读方式打开管道文件
    int fd = open("fifo_for_copy", O_RDONLY);
    if (fd < 0)
    {
        perror("open");
        exit(2);
    }
    // 备份文件
    int bak = open("log.txt.bak", O_CREAT | O_TRUNC | O_WRONLY, 0666);
    if (bak < 0)
    {
        perror("open");
        exit(2);
    }

    // 从管道文件中读取文件，并做备份
    char text[1024];
    while ((n = read(fd, text, sizeof(text))) > 0)
    {
        write(bak, text, n);
    }

    close(fd);
    close(bak);

    unlink("fifo_for_copy");
    return 0;
}